#ifndef ASSETMANAGER_H_
#define ASSETMANAGER_H_

// By: Jesse Guarascia de Urena
// Asset Manager base class
// All classes that want access to assets much inherit this class

#include "ImageManager.h"
#include "SoundManager.h"
#include "FontManager.h"
#include "ComponentManager.h"
#include "Camera.h"

class AssetManager{
private:
	static ImageManager *imageManager;
	static SoundManager *soundManager;
	static FontManager *fontManager;
	static ComponentManager *compManager;
	
public:
	// Get the image manager
	ImageManager *getImageManager() {if (!imageManager) imageManager = new ImageManager(); 
											return imageManager;}

	// Get the sound manager
	SoundManager *getSoundManager() {if (!soundManager) soundManager = new SoundManager();
											return soundManager;}

	// Get the font manager
	FontManager *getFontManager() {if (!fontManager) fontManager = new FontManager();
											return fontManager;}

	// Get the component manager
	ComponentManager *getCompManager() { if (!compManager) compManager = new ComponentManager();
											return compManager;}

	// Destory the content managers
	// NOTE: Only called at the end of a TryneEngine
	static void DestroyManagers();
};

#endif // ASSETMANAGER_H_